package cn.edu.xhu.library_management.department.mapper;

import cn.edu.xhu.library_management.department.entity.LmClass;
import cn.edu.xhu.library_management.department.entity.search.SearchClass;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author: MMJ
 * @Date: 2022-02-02
 * @Description: 班级相关dao操作
 */
public interface ClassMapper {
    /**
     * 查询所有班级
     * @return 班级对象集合
     */
    public List<LmClass> findAllClasses();

    /**
     * 查询专业对应的班级
     * @param maId 专业ID
     * @return 班级对象集合
     */
    public List<LmClass> findClassesByMajor(Integer maId);

    /**
     * 通过班级ID查询班级
     * @param clId 班级ID
     * @return 班级对象
     */
    public LmClass findClassById(Integer clId);

    /**
     * 通过班级名称查找班级(班级名称唯一)
     * 班级名称：maId + order === 18软件技术1班
     * @param year 入学年份
     * @param order 班级编号
     * @param maId 专业ID
     * @return 班级对象
     */
    public LmClass findClassByClassName(@Param("year")Integer year,@Param("order") Integer order,@Param("maId") Integer maId);

    /**
     * 搜索班级带分页
     * @param searchClass 班级搜索对象
     * @return 班级对象集合
     */
    public List<LmClass> search(SearchClass searchClass);

    /**
     * 搜索总条数
     * @param searchClass 班级搜索对象
     * @return 搜索条数
     */
    public Integer searchTotal(SearchClass searchClass);

    /**
     * 添加班级
     * @param lmClass 班级对象
     * @return 返回值大于0 即添加成功
     */
    public int addClass(LmClass lmClass);

    /**
     * 修改班级(班级ID)
     * @param lmClass 班级对象
     * @return 返回值大于0 即修改成功
     */
    public int updateClass(LmClass lmClass);

    /**
     * 通过班级ID，删除班级
     * @param clId 班级ID
     * @return 返回值大于0 即删除成功
     */
    public int deleteClassById(Integer clId);

    /**
     * 通过班级IDs集合，批量删除班级
     * @param clIds 班级ID集合
     * @return 返回值大于0 即删除成功
     */

    public int deleteClassesByIds(@Param("clIds") List<Integer> clIds);
}
